package com.qianfeng.vhly.youshare;

import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
import android.view.Window;
import com.qianfeng.vhly.youshare.model.Category;
import com.qianfeng.vhly.youshare.tasks.CategoryTask;
import com.qianfeng.vhly.youshare.tasks.TaskProcessor;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.HashMap;

/**
 * Created with IntelliJ IDEA.
 * User: vhly[FR]
 * Date: 15/2/4
 * Email: vhly@163.com
 */

/**
 * 启动页面，等待 5s 进入下一个页面，可能是教程页或者主界面
 */
public class SplashActivity extends FragmentActivity implements Runnable, TaskProcessor {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // 1. 通过代码的方式去掉标题栏
        requestWindowFeature(Window.FEATURE_NO_TITLE);

        setContentView(R.layout.activity_splash);

//        Thread th = new Thread(this);
//        th.start();

        // 这个地方进行数据的加载
        // 1. 加载商城的分类
        CategoryTask task = new CategoryTask(this);
        task.execute();
    }

    @Override
    public void run() {
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        showNext();

    }

    private void showNext() {
        // 通过 SharedPreference 进行是否显示过教程的判断

        SharedPreferences sp = getSharedPreferences(Constants.SP_APP_DATA, MODE_PRIVATE);

        // 是否显示过教程
        boolean shownTutorial = sp.getBoolean(Constants.SP_KEY_TUTORIAL_SHOWN, false);

        if (shownTutorial) {
            // 显示过教程，直接显示主界面
            startActivity(new Intent(this, MainActivity.class));
        } else {
            // 没显示过教程，启动教程界面
            startActivity(new Intent(this, TutorialActivity.class));
        }


        finish();
    }

    /**
     * 实现相应的异步任务处理接口
     *
     * @param result
     */
    @Override
    public void processResult(JSONObject result) {
        // TODO 保存数据到一个公共的区域，然后启动其他页面

        if (result != null) {
            Log.d("YouShare", "Category: " + result);
            try {
                int code = result.getInt("code");

                if (code == 1) {
                    // 代表成功
                    JSONObject msg = result.getJSONObject("msg");
                    JSONArray names = msg.names();

                    // 存储分类的信息，通过分类ID引用到实际的分类上，
                    // 只是保存最上层分类，子分类都是通过内部 subCategories 来进行引用的
//                    HashMap<String, Category> categories = new HashMap<String, Category>();

                    DataStorage dataStorage = DataStorage.getInstance();

                    // 如果JSON中有内容，那么解析
                    if (names != null) {
                        int length = names.length();

                        for (int i = 0; i < length; i++) {

                            String string = names.getString(i);

                            // 获取每一个分类的对象，进行解析
                            JSONObject object = msg.getJSONObject(string);

                            Category cat = new Category();
                            cat.parseJSON(object);

                            // 解析完成，需要将分类保存到 公共数据区中 DataStorage
                            dataStorage.addCategory(cat);
                        }
                    }
                } else {
                    // TODO 显示错误信息
                }


            } catch (JSONException e) {
                e.printStackTrace();
            }
        }

        showNext();
    }
}